package com.ctrip.corp.obt.shard.sql.mybatis.interceptor.compatibility.kingbase;

import com.ctrip.corp.obt.generic.utils.ExceptionUtils;
import com.ctrip.corp.obt.generic.utils.StringUtils;
import com.ctrip.corp.obt.shard.sql.mybatis.interceptor.compatibility.BaseSemanticCompatibility;
import com.ctrip.corp.obt.shard.utils.PluginUtils;
import lombok.extern.slf4j.Slf4j;
import net.sf.jsqlparser.JSQLParserException;
import net.sf.jsqlparser.expression.Alias;
import net.sf.jsqlparser.expression.Expression;
import net.sf.jsqlparser.parser.CCJSqlParserUtil;
import net.sf.jsqlparser.schema.Column;
import net.sf.jsqlparser.statement.Statement;
import net.sf.jsqlparser.statement.select.FromItem;
import net.sf.jsqlparser.statement.select.PlainSelect;
import net.sf.jsqlparser.statement.select.Select;
import net.sf.jsqlparser.statement.select.SelectBody;
import net.sf.jsqlparser.statement.select.SelectExpressionItem;
import net.sf.jsqlparser.statement.select.SelectItem;
import net.sf.jsqlparser.statement.select.SubSelect;
import org.apache.ibatis.mapping.MappedStatement;
import org.apache.ibatis.mapping.ResultMap;

import java.lang.reflect.Field;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;

/**
 * sql语义兼容
 *
 * @author x.shen
 * @since 2023/11/26
 */
@Slf4j
public class KBSemanticCompatibility extends BaseSemanticCompatibility {
    /**
     * sql关键字集合
     */
    public static final Set<String> SQL_KEY_WORDS = new HashSet<>();

    /**
     * 待兼容关键字存放
     */
    public KBSemanticCompatibility() {
        SQL_KEY_WORDS.add("level");
    }

    /**
     * 前置处理
     * 1.处理引号
     *
     * @param sql
     * @return
     */
    public String preHandleSql(String sql) {
        // 处理引号
        String result = handleQuotes(sql);
        return result;
    }
}
